modules = {

add: {
	name: "add",
	fixed: {
		output: ["out"]
	},
	variable: {
		input: ["in"]
	},
	required: [
		"count > 1"
	]
},

cos: {
	name: "cos",
	fixed: {
		input: ["in"],
		output: ["out"]
	}
},

cossegs: {
	name: "cossegs",
	fixed: {
		input: ["in"],
		output: ["out"]
	},
	variable: {
		input: ["value","duration"]
	},
	required: [
		"count > 1"
	]
},

cpsoct: {
	name: "cpsoct",
	fixed: {
		input: ["in","center"],
		output: ["out"]
	}
},

delay: {
	name: "delay",
	fixed: {
		input: ["in"]
	},
	variable: {
		input: ["time"],
		output: ["tap"]
	},
	required: [
		"count > 1"
	],
	optional: [
		"seconds",
		"buffer = 1"
	]
},

idelay: {
	name: "idelay",
	fixed: {
		input: ["in"]
	},
	variable: {
		input: ["time"],
		output: ["tap"]
	},
	required: [
		"count > 1"
	],
	optional: [
		"seconds",
		"buffer = 1"
	]
},

linsegs: {
	name: "linsegs",
	fixed: {
		input: ["in"],
		output: ["out"]
	},
	variable: {
		input: ["value","duration"]
	},
	required: [
		"count > 1"
	]
},

mult: {
	name: "mult",
	fixed: {
		output: ["out"]
	},
	variable: {
		input: ["in"]
	},
	required: [
		"count > 1"
	]
},

noise: {
	name: "noise",
	fixed: {
		output: ["out"]
	}
},

phasor: {
	name: "phasor",
	fixed: {
		input: ["frequency","phase"],
		output: ["out"]
	}
},

proc: {
	name: "proc",
	fixed: {
		input: ["in","amp","off"],
		output: ["out"]
	}
},

randcos: {
	name: "randcos",
	fixed: {
		input: ["in","amount"]
	},
	variable: {
		output: ["step","smooth"]
	},
	required: [
		"count > 1"
	]
},

randh: {
	name: "randh",
	fixed: {
		input: ["in"]
	},
	variable: {
		output: ["out"]
	},
	required: [
		"count > 1"
	]
},

randlin: {
	name: "randlin",
	fixed: {
		input: ["in","amount"]
	},
	variable: {
		output: ["step","smooth"]
	},
	required: [
		"count > 1"
	]
},

seq: {
	name: "seq",
	fixed: {
		input: ["in"],
		output: ["out"]
	},
	variable: {
		input: ["value","duration"]
	},
	required: [
		"count > 1"
	]
},

sh: {
	name: "sh",
	fixed: {
		input: ["trigger"]
	},
	variable: {
		input: ["in"],
		output: ["out"]
	},
	required: [
		"count > 1"
	]
},

shortout: {
	name: "shortout",
	variable: {
		input: ["in"]
	},
	required: [
		"count > 1"
	]
},

stereopan: {
	name: "stereopan",
	fixed: {
		input: ["in","pos"],
		output: ["left","right"]
	}
},

trigger: {
	name: "trigger",
	fixed: {
		input: ["in"],
		output: ["out"]
	},
	variable: {
		input: ["threshold"],
		output: ["out"]
	},
	options: {
		mode: ["up","down","wrapup","wrapdown","both"]
	},
	required: [
		"count > 1"
	],
	optional: [
		"mode = wrapup"
	]
}
};
